/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.vraptor.jpessoal.controllers;

import br.com.caelum.vraptor.*;
import static br.com.caelum.vraptor.view.Results.json;
import br.com.vraptor.jpessoal.DAO.FuncionalidadeDao;
import br.com.vraptor.jpessoal.bean.Funcionalidade;
import br.com.vraptor.jpessoal.bean.ObjSession;
import java.util.List;

@Resource
public class FuncionalidadeController {
    
    Result result;
    FuncionalidadeDao funcionalidadeDAO;
    ObjSession session;
   
    
    public FuncionalidadeController(Result result, FuncionalidadeDao funcionalidadeDao, ObjSession session){
        
        this.result = result;
        this.funcionalidadeDAO = funcionalidadeDao;
        this.session = session;
        
    }
    
    @Path("funcionalidade/listar")
    public void listar(){
        
        List<Funcionalidade> funcionalidadeList = funcionalidadeDAO.listar();
        result.include("funcionalidadeList", funcionalidadeList);
    }
    
    @Get
    @Path("funcionalidade/informar/{id}")
    public void informar(Integer id){
     
        
        Funcionalidade funcionalidade = this.funcionalidadeDAO.obterPorId(id);
        result.include("funcionalidade", funcionalidade);
        
    }
  
    @Path("funcionalidade/novo")
    public void novo(){
        
   
    }
     @Get
     @Path("funcionalidade/editar/{id}")
    public void editar(Integer id){
         
         Funcionalidade funcionalidade = this.funcionalidadeDAO.obterPorId(id);
         result.include(funcionalidade);
   
    }
    
    @Post
    @Path("funcionalidade/atualizarPerfilFuncionalidade")
    public void retirarPerfil(String incluidos, Integer idPerfil){
        
        String[] tokens = {};
                
        if(incluidos != null && !incluidos.equalsIgnoreCase("")){
            tokens = incluidos.split(":");
        } 
        Boolean retorno = this.funcionalidadeDAO.atualizarPerfilFuncionalidade(tokens, idPerfil);
        result.use(json()).from(retorno).serialize();
    }
      
    @Post
    @Path("funcionalidade/salvar")
    public void salvar(Funcionalidade funcionalidade){
       
         
       funcionalidade.setData_criacao(this.session.getDataAtual());   
       funcionalidade.setCriador(this.session.getSession().getId());
       this.funcionalidadeDAO.salvar(funcionalidade);
       result.redirectTo(FuncionalidadeController.class).listar();
        
     
    }
    
    @Post
    @Path("funcionalidade/atualizar")
    public void atualizar(Funcionalidade funcionalidade){
        
       Funcionalidade dataCriacao = this.funcionalidadeDAO.obterPorId(funcionalidade.getId());
       funcionalidade.setData_criacao(dataCriacao.getData_criacao());
       funcionalidade.setData_atualizacao(this.session.getDataAtual()); 
       funcionalidade.setAtualizador(this.session.getSession().getId());
       this.funcionalidadeDAO.atualizar(funcionalidade);
       result.redirectTo(FuncionalidadeController.class).editar(funcionalidade.getId());
        
     
    }
    
   
    
}
